This invention relates to the field of character and image representation, storage, transmission and generation on a computer output device. More particularly, it relates to a method and apparatus for producing scalable contour data for use in displaying alphanumeric and other characters on a computer screen or printer, as well as to the storage and transmission of text and other collections of characters.
A wide range of analog character shapes exist for representing a given alphanumeric character or typographic symbol (i.e., numbers, letters, punctuation marks and dingbats). Each such shape is distinguished by its various design features such as, but not limited to, underlying geometry, stroke thickness, character height, serifs, joinery, placement and number of contours and ratio of thin-to-thick strokes. A collection of characters (numbers, letters and other symbols) that share common design features is called a xe2x80x9ctypefacexe2x80x9d. A particular instantiation of a typeface design, in a particular medium, is referred to as a xe2x80x9cfontxe2x80x9d. Often, the term font refers to a rendering of a typeface in a single point size and a single weight, but we shall not impose such a limitation herein. Until the last several years, fonts were typically rendered in media such as metal slugs or photomasks for phototypesetters. Now, fonts are frequently rendered in digital form, for use in digital computers and digital display devices, such as personal computers and laser printers, to produce output in a particular typeface design.
There are several commercially standard formats in widespread use for representing fonts in digital form, such as formats adopted and popularized by Bitstream Inc. of Cambridge, Mass.; Adobe Systems, Inc. of Mountain View, Calif.; Apple Computer, Inc., of Cupertino, Calif.; Microsoft Corporation of Bellevue, Wash.; URW of Hamburg, Germany; and Agfa Compugraphic of Wilmington, Mass. Each format has its unique characteristics. They share in common, though, the fact that for a given typeface design, a font has for each character a unique computer program which encodes the unique design of that character. A font is thus a collection of computer programs and data. Each typeface thus is reproduced from its own set of unique character programs. For instance, one set of character programs is used to represent the characters of the typeface Times and another set of character programs is used to represent the typeface Helvetica. The character programs are not universal, but differ with each of the available font-encoding formats.
Typically, a digital font for a full Roman character set (i.e., typeface) requires about 30-60 kB (kilobytes) of memory (on average, assume 45 kB per font). A document prepared with a modern word processing or desktop publishing system, though, may typically contain several typefaces. Consequently, when such a document is to be stored or transmitted electronically, it may be necessary to transmit (or store) along with the text data for the document one or more font files of about 45 kB each. A document set in four fonts will require about 180 kB in font files alone, in addition to the text file for the document. Similarly, if a laser printer is to be provided with the capability of printing in a number of resident typefaces, a number of fonts will have to be stored, each at an average of about 45 kB. Moreover, the size(s) of the font file(s) does(do) not scale with document size. The same large font files are needed for a 4 k text file as for a 400 k text file. In general, different weights of a typeface design may be treated as different fonts, exacerbating the problem. Fortunately, intelligent font scaling algorithms can be used to produce from a single font characters of different sizes, so a font is not needed for each different point size of type to be employed in a document.
Thus among the most significant drawbacks of such prior digital fonts is their size. Each font consumes a considerable amount of memory and represents a large additional amount of data to be transmitted along with the encoded text of a document to be output using that font (or, more correctly, the typeface represented by the font). A further restriction inherent in the use of such fonts is that the user must have available, when a document is being output, fonts for all typefaces the user wishes to employ. This means the user is constrained in his or her creativity to use of the typefaces at hand.
These and other drawbacks of the prior art are overcome, and additional advantages achieved, with a unique system employing a single, generic base font from which many specific typeface designs can be derived, a descriptor file for each specific typeface design, and a font generator which creates from the generic base font and one or more descriptor files a character program for each character in the font.
More precisely, instead of a single, generic base font, there may be provided a generic base font for each category of typeface. A xe2x80x9ccategoryxe2x80x9d of typeface is the term used herein to distinguish from each other alphabets of distinctly different topology: e.g., Roman type, Cyrillic type, Arabic type, Kanji type and other forms of type.
In its descriptor file, a specific typeface design is represented as a compact enumeration of modifications to be made to its base font. These enumerations are contained in an encoded file which comprises program/data structures of defined arrangement. A descriptor file for a specific typeface design, according to the preferred embodiment disclosed below, requires only about 2K of data.
The generic base font may be made resident in a printer, video terminal or the like. Thus, only the descriptor file(s) for the typefaces in use need be stored or transmitted with a document; the generic base font is essentially part of the environment. Only about 2K additional program/data is needed for each typeface descriptor file which is to be associated with a specific document.
Additionally, descriptor files may be easily modified, thus providing a simple way to alter character programs so as to alter the appearance of type. That is, by modifying an existing descriptor file, it is possible to generate a typeface design which is varied, to almost any desired degree and in almost any desired way, from a previously encoded typeface design. Further, the parameters of two or more typeface designs readily can be blended by combining appropriate fields in their descriptor files, according to any desired mathematical algorithm (e.g., by performing a weighted average). Thus a user can easily blend two or more typeface designs, or otherwise modify a typeface design.
A library of typeface designs comprises a library of their descriptor files plus the associated generic base font. Thus a library of, say, one hundred fonts at a total of about 4.5 MB volume can be replaced by a generic base font of about 200 kB, descriptor files of 200-300 kB and a font generator of about 60 kB. Not only is there a large savings in memory and transmission time, but also there is much enhanced capability given the user.